﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Servicios
{
    public class VideoServiceImpl : IVideoService
    {
        public static readonly string VIDEO_LOCATION = @"\\" +System.Net.Dns.GetHostName() + @"\SearchServer\Videos\";

        public static readonly string PATRON_DE_FORMATOS = "*.wmv";

        private static VideoServiceImpl instancia = new VideoServiceImpl();

        private VideoServiceImpl() : base() { }

        public static VideoServiceImpl ObtenerInstancia()
        {
            return instancia;
        }

        public void AgregarVideo(string ruta)
        {
            FileInfo fileInfo = null; 
            try
            {
                //Validamos que existe el video.
                fileInfo = new FileInfo(ruta);
            }
            catch (Exception e) {
                throw new IOException("Ruta de video invalida");
            }
            //Obtenemos el nombre.
            string nombreDeArchivo = fileInfo.Name;

            //Copiamos el archivo hacia nuestra carpeta de videos. Si ya existe se sobreescribe.
            File.Copy(fileInfo.DirectoryName, VIDEO_LOCATION, true);

        }

        public IList<string> ObtenerTodos()
        {
            IList<string> rutasDeLosVideos = new List<string>();

            if (Directory.Exists(VIDEO_LOCATION)) 
            {
                //Si la carpeta esta creada, buscamos todos los archivos que estan en esa carpeta.
                DirectoryInfo dir = new DirectoryInfo(VideoServiceImpl.VIDEO_LOCATION);
                IList<string> videos = new List<string>();
                foreach (FileInfo video in dir.GetFiles(PATRON_DE_FORMATOS))
                {
                    rutasDeLosVideos.Add(video.FullName);
                }
            }
            return rutasDeLosVideos;
        }
    }
}
